package cn.vshare.dao;
import cn.vshare.entity.Kind;
import cn.vshare.entity.Video;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * (TVideo)表数据库访问层
 *
 * @author makejava
 * @since 2018-09-14 14:14:39
 */

public interface VideoDao {

    /**
     * 导航栏模糊搜索
     *
     * @return
     */
    List<Video> getLikeVideos(String cond);

    /**
     * 新增数据
     *
     * @param video 实例对象
     * @return 影响行数
     */
    int insertVideo(Video video);

    /**
     * 修改数据
     *
     * @param video 实例对象
     * @return 影响行数
     */
    int updateVideo(Video video);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 影响行数
     */
    int deleteById(String id);

    /**
     * 根据类别展示视频并分页
     *
     * @param map
     * @return
     */
    List<Video> queryVideoByKindId(Map map);

    /**
     * 查询所有video信息
     *
     * @return
     */
    List<Video> queryAllVideo();

    /**
     * 查询单个视频
     * @param id 视频id
     * @return
     */

    Video queryVideoById(String id);


    /**
     * 获得视频条数
     *
     * @param map
     * @return
     */
    int queryVideoByKindIdCount(Map map);

    /**
     * 通过视频上传时间he name进行分页查询z
     */
    List<Video> getVideoByUpTimeAndName(Map map);

    /**
     * 总数z
     *
     * @param map
     * @return
     */
    int AllCount(Map map);

    /**
     * 作者 任
     * 获取用户上传的视频
     *
     * @param userId
     * @return
     */
    List<Video> queryVideoByUserId(String userId);

    /**
     * 作者 任
     * 获取用户上传的视频总数
     *
     * @param userId
     * @return
     */
    int queryAllVideoByUserId(String userId);

    /**
     * 分类统计视频条数
     * @param kind
     * @return
     * @author pengahaixin
     */
    int countVideoTypeByKind(Kind kind);

    /**
     * 统计不同种类视频点击数
     * @param kind 视频种类
     * @return
     * @author penghaixin
     */
    //int countViewTimesByKind(Kind kind);
    //解决返回值为空的BUG
    Integer countViewTimesByKind(Kind kind);



    /**
     * 视频点击量
     * @param video
     */
    void updatePageview(Video video);

    /**
     * 通过id查询改视频
     * @param id
     * @return
     */
    Video getVideoById(String id);

    /**
     * 统计不同年龄段视频上传量
     * @param map
     * @return
     */
    int countVideoByAge(Map<String, Object> map);

    void updateVideos(Map<String, Object> cond);

    /**
     * 修改视频状态
     * @param map
     * @author penghaixin
     */
    void updateVideoById(Map<String, Object> map);

    void updateHYById(String id);


    List<Video> getVideosByUserIdKinId(@Param("userId") String userId, @Param("kindId") String kindId);
    int getVideosCountByUserIdKinId(@Param("userId") String userId, @Param("kindId") String kindId);

    /**
     * 通过种类 useriD kindId title 动态搜索视频
     * @param video
     * @return
     */
    List<Video> getVideosByUserIdKindIdTitle(Video video);
    int getVideosCountByUserIdKindIdTitle(Video video);



}